Procese si procesoare.
Mecanismele cerute de executia eficienta a diverselor programe pe acelasi sistem nu pot fi programate de catre programatorul de aplicatii, deoarece ele trateaza evenimente impredictibile la momentul compilarii. In astfel de evenimente se pot include: aparitia de esantioane care nu se incadreaza in gama stabilita, numarul si caracteristicile celorlalte programe (a caror executie este intercalata cu executia programului in discutie )  etc. Deci, sistemul de operare este cel care trebuie sa ofere facilitatile de baza necesare implementarii corecte si comode a sistemelor cu multiprogramare. Fig. 3.3. prezinta structura sistemului de operare. Nucleul sistemului de operare (OSK   Operating System Kernel) este format dintr o colectie de proceduri care implementeaza cele patru mecanisme din paragraful anterior, care pot fi utilizate de celelalte taskuri indicate in figura pentru a realiza coordonarea activitatilor lor. Totusi, nu toate aceste taskuri sint in mod necesar dedicate implementarii activitatilor legate de aplicatii. Unele dintre ele fac parte din sistemul de operare (de exemplu cele destinate gestiunii fisierelor). Cu toate acestea, atit taskurile sistem, cit si cele de aplicatii folosesc aceleasi functii si doar prioritatile asociate sint elementele ce le deosebesc in tratarea de catre OSK.
In general, taskurile din figura sint numite procese. Fiecare proces este compus din trei parti principale:
a) O baza de date, pastrata, de regula, in memoria principala, care contine toate datele si spatiul de memorie necesare pentru reprezentarea variabilelor programului, ca si celelalte variabile cerute de executarea calculelor aferente.
b) Codul care implementeaza algoritmul executat de catre proces.
c) Mediul in care se executa procesul. Termenul de "mediu" indica o serie de atribute ale procesului, adesea gestionate de catre sistemul de operare, care sint necesare executiei corecte. Exemple de atribute pot fi descriptorii zonelor de memorie rezervate procesului, cu drepturile de acces pentru fiecare din ele. Problema va fi reluata ulterior. 
Un numar de procese pot avea parti comune: aceeasi secventa de instructiuni sau parti ale bazelor de date. In prima clasa intra compilatoarele in sistemele cu multiprelucrare, folosite in comun de mai multi utilizatori. In aceste cazuri, in memoria sistemului se incarca o singura copie a compilatorului, iar fiecarui utilizator i se aloca zone de date si medii distincte, fapt ce evita multiplicarea copiilor compilatorului. Procesele care folosesc in comun acelasi cod se numesc "instantanee" sau treceri (instances) ale aceluiasi program. Utilizarea in comun de date de catre mai multe procese se manifesta cind utilizatorul doreste sa implementeze transferul de date intre procese printr un set de variabile vizibile de catre toate procesele aflate in comunicatie.
Situatia este similara cu cea a variabilelor globale din programele Pascal, care sint vazute din si pot fi utilizate de catre toate procedurile declarate in cadrul acestor programe. In sistemele cu multiprelucrare legarea variabilelor comune nu se face precum in Pascal,ci de catre sistemul de operare cu informatiile continute in directive ale utilizatorului.
Executia intercalata a proceselor.
Instructiunile ce compun codul unui proces se executa secvential, cite una la anumite momente de timp. Daca sistemul de intreruperi nu este dezactivat, executia procesului curent poate fi intrerupta la sfirsitul unei instructiuni masina pentru a permite comutarea CPU catre rularea unui alt proces. Devine, deci, posibila intercalarea instructiunilor unui proces intre doua instructiuni ale altui proces.
Efectul la nivel macroscopic al intercalarii executiei diferitelor procese consta in senzatia ca unitatea centrala de prelucrare acorda intreaga sa atentie in paralel tuturor proceselor. Utilizind o scala mai fina a timpului se constata, totusi, ca microprocesorul executa, la un moment dat, un singur proces. Pentru asemenea sisteme se mai foloseste si denumirea de pseudoparalele.
De curind, au fost puse pe piata mai multe microcalculatoare destinate utilizarii in configuratii multiprocesor (fig. 3.4). Sistemele, continind mai multe unitati centrale de prelucrare, permit implementarea proceselor cu adevarat paralele (spre deosebire de cele pseudoparalele), intrucit fiecare procesor poate executa un proces in paralel cu alte procesoare. Sistemul nu rezolva problemele excluderii mutuale si ale sincronizarii. De asemenea, chiar si pentru instructiunile multiprocesor exista un anumit grad de pseudoparalelism

Comutarea proceselor
1.Starile procesului
Pentru a obtine pseudoparalelismul este necesara comutarea CPU intre doua procese. Ea consta din doua faze simetrice : salvarea contextului procesului intrerupt si restaurarea acestuia la terminarea intreruperii. O problema esentiala a implementarii este definirea starii unui proces, care este compusa din toate informatiile necesare reluarii ulterioare corecte a operarii procesului, la un moment cind CPU este din nou alocata procesului suspendat.       
Apare ca naturala divizarea in trei clase a informatiilor ce compun starea unui proces:
a)Valorile datelor ce se salveaza. De obicei acestea sint continuturile registrelor, care se afla intr o zona considerata nesigura intrucit noul proces, prin utilizarea registrelor, distruge continutul acestora. In clasa registrelor intra, desigur, indicatorul stivei si indicatorii de conditie.
b)Contorul programului, indicind prima instructiune ce trebuie executata la reluarea rularii procesului.
c)Toate registrele care contin informatii ce descriu mediul de executie al procesului, incluzind, eventual, registrele unor dispozitive externe,cum sint unitatea de gestiune a memoriei si coprocesorul matematic.
Toate aceste informatii trebuie salvate intr o zona de memorie dedicata, rezervata special pentru astfel de scopuri si pentru fiecare proces. Continutul acestei zone descrie starea atinsa de catre procesul asociat cind acesta a fost suspendat. Pentru reluarea corecta a executiei procesului suspendat este suficienta reincarcarea acestor informatii in registrele din care au provenit.
Informatia salvata de suspendarea unui proces constituie o descriere a starii acestuia. Intr un mediu multitasking mai sint necesare si alte detalii pentru o completa caracterizare a starii procesului. In mod obisnuit, informatiile suplimentare necesare identificarii procesului se adauga la cele continute in registre pentru a forma un bloc compact, care mai contine si parametrii necesari implementarii de catre CPU a unei strategii de planificare. Acest bloc compact, pastrat in memorie, se numeste descriptorul procesului, deoarece el descrie toate caracteris  ticile relevante ale procesului si starea la care au ajuns calculele asociate lui. In fig.3.5 se sugereaza o posibila structurare a unui descriptor de proces. Se remarca structura de lista inlantuita, existind indicator catre descriptorul unui alt proces, fapt ce faciliteaza activitatea planificatorului.

2.Salvarea si restaurarea continutului registrelor.
Comutarea procesului (adesea numita si comutarea contextului) este o operatie elementara, dar ea este o componenta importanta a primitivelor complexe dedicate operatiilor de gestiune in sisteme multitasking. Intrucit ea este frecvent folosita in sistemele cu utilizatori multipli, viteza de comutare a contextului este unul din factorii majori in influentarea eficientei unui sistem, indeosebi in aplicatiile in timp real.
Cea mai mare parte a consumului de timp in comutarea contextului se datoreaza transferului continutului registrelor in zona de memorie alocata descriptorului si, reciproc, transferului de date din zona alocata descriptorului in registrele adecvate. In arhitectura microprocesoarelor se impune realizarea compromisului intre viteza de executie a programelor si cea de comutare a contextului.
O unitate centrala de prelucrare cu multe registre ruleaza mai eficient un proces ca urmare a posibilitatii de stocare in CPU a unui numar mai mare de date. Pe de alta parte, timpul consumat la comutarea contextului este, practic, proportional cu numarul de registre. Nici arhitectura fara registre nu pare solutia optima, deoarece lungeste duratele de executie a programelor.
Majoritatea microprocesoarelor moderne au in structura lor 8 16 registre de uz general, al caror continut poate fi salvat sau restaurat cu acelasi tip de instructiune (push-pop).

3.Excluderea mutuala 
Executia paralela sau pseudoparalela a mai multor procese conduce, in mod inevitabil, la concurenta pentru resursele sistemului, resurse ce pot fi solicitate de mai mult de un proces pentru terminarea taskului ce i s a asignat. Fenomenul este evident in cazul sistemelor paralele, dar apare ca paradoxal pentru sistemele pseudoparalele.
Concurenta in sisteme pseudoparalele
Este necesar un mecanism de control al accesului la resursele critice. Solutia problemei excluderii mutuale trebuie sa satisfaca urmatoarele criterii:
(1) numai un singur proces poate utiliza, la un anumit moment de timp, resursa in discutie;
(2)cind mai multe procese incearca, simultan,  obtinerea resursei, mecanismul de control trebuie sa aloce resursa numai unuia din procese si intr un timp finit;
(3) cind un proces detine o resursa,timpul de posesie trebuie sa fie limitat;  la  expirarea lui resursa trebuiesa fie eliberata;
(4) procesele asteptind disponibilitatea resursei trebuie sa nu iroseasca timpul unitatii centrale, deci trebuie suspendate.
Specificarea unor valori finite de timp pentru acordarea si posesia resursei nu este direct legata de excluderea mutuala, dar se introduce pentru evitarea blocarii (deadlock). Conditia (4), cum se va arata, poate fi doar partial satisfacuta, deci ar trebui considerata ca dezirabila si nu ca obligatorie.